除了特定的 Exception 之外,在開發時很難一次一個一個去做細部的分類,所以會設定一個全域的 Exception class。
大部分的 Exception 狀況都會繼承同一個 Exception 這個 class,而 RuntimeException 會繼承到 Exception
所以在建立全域的時候,可以繼承 RuntimeExcption 這個 class
在 exception 中新增 GlobalException 這個 class,在 GlobalException 中輸入下列:
@Order(1)
@ControllerAdvice
public class GlobalExceptionHandler extends RuntimeException
@ExceptionHandler(Excpeion.class)
public ResponseEntity<ErrorDetails> handleGlobalException(Exception exception, WebRequest webRequest){
ErrorDetails errorDetails = new ErrorDetails(new Date(),exception.getMessage(),
webRequest.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@ResponseBody : 將返回(return)的資料放入HTTP Response Body中
@ExceptionHandler(Exception.class): 代表這個例外處理的範圍是所有的Exception.class,所有例外都會歸在Exception類,代表全域的意思
預設是所有的例外都會放在這裡,而其餘的特殊事件則會使用上一篇敘述的方式~
這邊要特別注意,要加上 @Order 這個註釋,表示他的執行順序,而所有的 Exception 都會落到 Global 裡,所以客製化的 Exception 要記得標註成 @Order(0) ,才不會被 Global 覆蓋住。
Exception 的處理在網頁建置中非常重要,才能知道錯誤的原因,並也讓使用者清楚的了解,如此可以增加使用者的體驗等~
今天的紀錄就先到這裡了~我們明天見~